fivetranでsync実行時、BigQuery Dataset Not Foundエラーが出た場合(Locationの設定違い)
fivetranのDestinationをBigQueryにしたとき、data syncでBigQuery Dataset Not Found
というエラーが出てなかなか解決できずにハマった。
sync endのログ全文は以下のような感じ
{ "event" : "sync_end", "data" : { "status" : "FAILURE_WITH_TASK", "reason" : "com.fivetran.warehouses.big_query.exceptions.BigQueryException: 404 Not Found\nPOST https://bigquery.googleapis.com/bigquery/v2/projects/[[プロジェクト名]]/jobs\n{\n \"code\" : 404,\n \"errors\" : [ {\n \"domain\" : \"global\",\n \"message\" : \"Not found: Dataset cm-alliance-prd:s3\",\n \"reason\" : \"notFound\"\n } ],\n \"message\" : \"Not found: Dataset [[データセットID]]\",\n \"status\" : \"NOT_FOUND\"\n}", "taskType" : "bigquery_dataset_not_found" }, "created" : "2022-08-14T04:08:09.938Z", "connector_type" : "s3", "connector_id" : "geology_puerperal", "connector_name" : "s3.customer_subscriber_report_sample", "sync_id" : "80fb01e3-8ed3-43c6-b222-00ba1aadfee6" }
先に結論から言いますと、データセットのロケーションがFivetranとBigqueryで違っていたことによって起こったエラーでした。
原因
データセットは存在しているのになんで? と色々と調べていたところ、実行エラー時に届いていたメールにヒントを発見した。
メールの内容は、
BigQuery DataSet Not Found The following datasets have not been found while performing the warehouse operations. s3; Please make sure the dataset location is same as location given in big query setup form.
locationを見ろ と。
まずはfivetranのDestination設定を確認してみる。
Dataset Location
の箇所が該当の設定で、 asia-northeast1 となっています。
Bigqueryの設定ではどうなっていたかというと、
USをロケーションにして作ってました。
この違いによりエラーが出ていたということです。
手動でBigqueryにデータセットを作成してしまっていて、その時に設定をミスったぽいです(USをロケーションにして保存してしまう)。
解決
FivetranでDestinationを作り直す or Bigqueryでデータセットを作り直す で解決できました。
今回は Bigqueryでデータセットを作り直す 方法を取りました。
Bigqueryでデータセットの削除 -> FivetranのConnectorsで Syncをやり直す
という手順を行うと、再度データセット、テーブルが作成され、データが反映されるようになりました。
fivetranでログを確認してみると、create_schema
とcreate_table
が行われていることを確認できました。